
# 使用生成器生成斐波那契数列
def fbi(max):
    i, a, b = 0, 0, 1 # i 控制循环次数, a,b用来生成数据
    while i < max:
        # 如果一个函数中包含 yield,就是一个生成器,每次调用next或for循环执行,到yield返回
        # 下一次next继续从yield处开始执行
        yield b
        a, b = b, a+b  #
        i=i+1
    return 'done' # 生成器终止时,拿不到数据返回的信息
data = fbi(10)

hou=iter([1,2,3,4])
hou.__next__()
while True:
    try:
        x=next(data)
        print('data:', x)
    except StopIteration as e:
        print('Generator return value:', e.value) #捕获异常
        break